home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / STAR.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-04-21  |  24.9 KB  |  1,011 lines

  1. 10000  DIM GALAXY(10,10),WARP.COOR(9,2),KLINGON.STATS(3,3)
  2. 10010  DIM DAMAGE.STATS(8),DEVICE$(8)
  3. 10020  DEF FN A$(X) = MID$(COMM$,X,1)
  4. 10030  DEF FN B$(X) = RIGHT$(COMM$, LEN(COMM$) - X)
  5. 10040  DEF FN C(X) = INSTR(GEF$, FN A$(X))
  6. 10050  DEF FN K(D) = (KLINGON.STATS(I,2) - SECTORY) ^ 2
  7. 10060  DEF FN J(D) = (KLINGON.STATS(I,1) - SECTORX) ^ 2
  8. 10070  DEF FN D(D) = SQR( FN J(D) + FN K(D))
  9. 10080  DEF FN R(R) = INT( RND(1) * 10 + 1)
  10. 10090  RANDOMIZE VAL( RIGHT$( TIME$ ,2))
  11. 10100  DEFINT O
  12. 10110  DEFDBL U-W
  13. 10120  KEY OFF
  14. 10130  SCREEN 0,1,1,1
  15. 10140  CLS
  16. 10150  RESTORE
  17. 10160  FOR OO = 1 TO 8
  18. 10170  READ DEVICE$(OO)
  19. 10180  NEXT OO
  20. 10190  DATA WARP ENGINES,SHORT RANGE SENSORS,LONG RANGE SENSORS,PHASER CONTROL
  21. 10200  DATA PHOTON TUBES,DAMAGE CONTROL,SHIELD CONTROL,LIBRARY-COMPUTER
  22. 10210  DATA ANTARES,RIGEL,PROCYON,VEGA,CANOPUS,ALTAIR,SAGITTARIUS,POLLUX
  23. 10220  DATA SIRIUS,DENEB,CAPELLA,BETELGEUSE,ALDERBARAN,REGULUS,ARCTURUS
  24. 10230  DATA SPICA,CYGNUS,CRAB,NEBULUS,SCORPIUS
  25. 10240  STARDATE = INT( RND(1) * 20 + 20) * 100
  26. 10250  STARDATE.CONSTANT = STARDATE
  27. 10260  DAYS = 75 + INT( RND(1) * 10 + 1)
  28. 10270  ANY.DAMAGE = 0
  29. 10280  ENERGY = 10000
  30. 10290  ENERGY.CONSTANT = ENERGY
  31. 10300  TORPEDOES = 10
  32. 10310  TORPEDOE.CONSTANT = 10
  33. 10320  KLINGON.SHIELDS = 200
  34. 10330  SHIELDS = 0
  35. 10340  NO.OF.STARBASES = 0
  36. 10350  NO.OF.KLINGONS = 0
  37. 10360  HYPERX = 0
  38. 10370  HYPERY = 0
  39. 10380  OUT.OF.GALAXY = 0
  40. 10390  SINGLE$ = ""
  41. 10400  PLURAL$ = " IS "
  42. 10410  QUADRANTX = FN R(1)
  43. 10420  QUADRANTY = FN R(1)
  44. 10430  SECTORX = FN R(1)
  45. 10440  SECTORY = FN R(1)
  46. 10450  FOR OO = 1 TO 9
  47. 10460  WARP.COOR(OO,1) = 0
  48. 10470  WARP.COOR(OO,2) = 0
  49. 10480  NEXT OO
  50. 10490  HOW.MUCH.DAMAGE = 0
  51. 10500  WARP.COOR(2,1) = - 1
  52. 10510  WARP.COOR(3,1) = - 1
  53. 10520  WARP.COOR(4,1) = - 1
  54. 10530  WARP.COOR(4,2) = - 1
  55. 10540  WARP.COOR(5,2) = - 1
  56. 10550  WARP.COOR(6,2) = - 1
  57. 10560  WARP.COOR(1,2) = 1
  58. 10570  WARP.COOR(2,2) = 1
  59. 10580  WARP.COOR(6,1) = 1
  60. 10590  WARP.COOR(7,1) = 1
  61. 10600  WARP.COOR(8,1) = 1
  62. 10610  WARP.COOR(8,2) = 1
  63. 10620  WARP.COOR(9,2) = 1
  64. 10630  FOR OO = 1 TO 8
  65. 10640  DAMAGE.STATS(OO) = 0
  66. 10650  NEXT OO
  67. 10660  COMMAND$ = "NAVSRSPHATORSHEDAMXXXHELGALCHG"
  68. 10670  FOR OO = 1 TO 10
  69. 10680  FOR OOO = 1 TO 10
  70. 10690  KLINGONS.IN.QUADRANT = 0
  71. 10700  GALAXY(OO,OOO) = 0
  72. 10710  RANDOM.NO.1 = RND(1)
  73. 10720  IF RANDOM.NO.1 < 0.9 THEN 10760
  74. 10730  KLINGONS.IN.QUADRANT = 3
  75. 10740  NO.OF.KLINGONS = NO.OF.KLINGONS + 3
  76. 10750  GOTO 10830
  77. 10760  IF RANDOM.NO.1 < 0.8 THEN 10800
  78. 10770  KLINGONS.IN.QUADRANT = 2
  79. 10780  NO.OF.KLINGONS = NO.OF.KLINGONS + 2
  80. 10790  GOTO 10830
  81. 10800  IF RANDOM.NO.1 < 0.75 THEN 10830
  82. 10810  KLINGONS.IN.QUADRANT = 1
  83. 10820  NO.OF.KLINGONS = NO.OF.KLINGONS + 1
  84. 10830  STARBASES.IN.QUADRANT = 0
  85. 10840  IF RND(1) < 0.97 THEN 10870
  86. 10850  STARBASES.IN.QUADRANT = 1
  87. 10860  NO.OF.STARBASES = NO.OF.STARBASES + 1
  88. 10870  GALAXY(OO,OOO) = KLINGONS.IN.QUADRANT * 100 + STARBASES.IN.QUADRANT * 10
  89. 10880  GALAXY(OO,OOO) = GALAXY(OO,OOO) + FN R(1)
  90. 10890  NEXT OOO
  91. 10900  NEXT OO
  92. 10910  IF NO.OF.KLINGONS > DAYS THEN 10930
  93. 10920  GOTO 10940
  94. 10930  DAYS = NO.OF.KLINGONS + 1
  95. 10940  IF NO.OF.STARBASES < > 0 THEN 11030
  96. 10950  IF GALAXY(QUADRANTX,QUADRANTY) < 200 THEN 10970
  97. 10960  GOTO 10990
  98. 10970  GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) + 100
  99. 10980  NO.OF.KLINGONS = NO.OF.KLINGONS + 1
  100. 10990  NO.OF.STARBASES = 1
  101. 11000  GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) + 10
  102. 11010  QUADRANTX = FN R(1)
  103. 11020  QUADRANTY = FN R(1)
  104. 11030  KLINGON.FOR.RATING = NO.OF.KLINGONS
  105. 11040  IF NO.OF.STARBASES < > 1 THEN 11060
  106. 11050  GOTO 11080
  107. 11060  SINGLE$ = "S"
  108. 11070  PLURAL$ = "ARE"
  109. 11080  PRINT "YOUR ORDERS ARE AS FOLLOWS:"
  110. 11090  PRINT "DESTROY THE";NO.OF.KLINGONS;"KLINGON WARSHIPS WHICH HAVE INVADED"
  111. 11100  PRINT " THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS"
  112. 11110  PRINT "ON STARDATE";STARDATE.CONSTANT + DAYS;".";
  113. 11120  PRINT "THIS GIVES YOU";DAYS;"DAYS. THERE ";PLURAL$
  114. 11130  PRINT NO.OF.STARBASES;"STARBASE";SINGLE$;
  115. 11140  PRINT " IN THE GALAXY FOR RESUPPLYING YOUR SHIP."
  116. 11150  PRINT
  117. 11160  PRINT "HIT ANY KEY TO BEGIN YOUR COMMAND"
  118. 11170  WHILE INKEY$ = ""
  119. 11180  WEND
  120. 11190  QUADRANT.NAME = QUADRANTX
  121. 11200  QUADRANT.NO = QUADRANTY
  122. 11210  KLINGONS.IN.QUADRANT = 0
  123. 11220  STARBASES.IN.QUADRANT = 0
  124. 11230  STARS.IN.QUADRANT = 0
  125. 11240  MORE.DAMAGE = 0.5 * RND(1)
  126. 11250  GALAXY(QUADRANTX,QUADRANTY) = INT(GALAXY(QUADRANTX,QUADRANTY)) + 0.1
  127. 11260  IF QUADRANTX < 1 OR QUADRANTX > 10 THEN 11520
  128. 11270  IF QUADRANTY < 1 OR QUADRANTY > 10 THEN 11520
  129. 11280  GOSUB 19060
  130. 11290  PRINT
  131. 11300  IF STARDATE.CONSTANT < > STARDATE THEN 11340
  132. 11310  PRINT "YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED"
  133. 11320  PRINT "IN THE GALACTIC QUADRANT `";QUADRANT.NAME$;"'."
  134. 11330  GOTO 11360
  135. 11340  IF OUT.OF.GALAXY = 1 THEN 11370
  136. 11350  PRINT "NOW ENTERING ";QUADRANT.NAME$;" QUADRANT . . ."
  137. 11360  PRINT
  138. 11370  KLINGONS.IN.QUADRANT = INT(GALAXY(QUADRANTX,QUADRANTY) * 0.01)
  139. 11380  STARBASES.IN.QUADRANT = INT(GALAXY(QUADRANTX,QUADRANTY) * 0.1)
  140. 11390  STARBASES.IN.QUADRANT = STARBASES.IN.QUADRANT - 10 * KLINGONS.IN.QUADRANT
  141. 11400  STARS.IN.QUADRANT = GALAXY(QUADRANTX,QUADRANTY)
  142. 11410  STARS.IN.QUADRANT = STARS.IN.QUADRANT - 100 * KLINGONS.IN.QUADRANT
  143. 11420  STARS.IN.QUADRANT = STARS.IN.QUADRANT - 10 * STARBASES.IN.QUADRANT
  144. 11430  IF KLINGONS.IN.QUADRANT = 0 THEN 11480
  145. 11440  IF OUT.OF.GALAXY = 1 THEN 11480
  146. 11450  PRINT "COMBAT AREA      CONDITION RED"
  147. 11460  IF SHIELDS > 200 THEN 11480
  148. 11470  PRINT "   SHIELDS DANGEROUSLY LOW"
  149. 11480  FOR OO = 1 TO 3
  150. 11490  KLINGON.STATS(OO,1) = 0
  151. 11500  KLINGON.STATS(OO,2) = 0
  152. 11510  NEXT OO
  153. 11520  FOR OO = 1 TO 3
  154. 11530  KLINGON.STATS(OO,3) = 0
  155. 11540  NEXT OO
  156. 11550  QUADRANT$ = STRING$(300," ")
  157. 11560  ITEM$ = "<*>"
  158. 11570  STRING.SEARCH.1 = SECTORX
  159. 11580  STRING.SEARCH.2 = SECTORY
  160. 11590  GOSUB 18840
  161. 11600  IF KLINGONS.IN.QUADRANT < 1 THEN 11710
  162. 11610  FOR OO = 1 TO KLINGONS.IN.QUADRANT
  163. 11620  GOSUB 18760
  164. 11630  ITEM$ = "+++"
  165. 11640  STRING.SEARCH.1 = RANDOM.NO.1
  166. 11650  STRING.SEARCH.2 = RANDOM.NO.2
  167. 11660  GOSUB 18840
  168. 11670  KLINGON.STATS(OO,1) = RANDOM.NO.1
  169. 11680  KLINGON.STATS(OO,2) = RANDOM.NO.2
  170. 11690  KLINGON.STATS(OO,3) = KLINGON.SHIELDS * (0.5 * RND(1))
  171. 11700  NEXT OO
  172. 11710  IF STARBASES.IN.QUADRANT < 1 THEN 11770
  173. 11720  GOSUB 18760
  174. 11730  ITEM$ = ">|<"
  175. 11740  STRING.SEARCH.1 = RANDOM.NO.1
  176. 11750  STRING.SEARCH.2 = RANDOM.NO.2
  177. 11760  GOSUB 18840
  178. 11770  FOR OO = 1 TO STARS.IN.QUADRANT
  179. 11780  GOSUB 18760
  180. 11790  ITEM$ = " * "
  181. 11800  STRING.SEARCH.1 = RANDOM.NO.1
  182. 11810  STRING.SEARCH.2 = RANDOM.NO.2
  183. 11820  GOSUB 18840
  184. 11830  NEXT OO
  185. 11840  GOSUB 17030
  186. 11850  IF SHIELDS + ENERGY > 10 THEN 11910
  187. 11860  IF ENERGY > 10 OR DAMAGE.STATS(7) = 0 THEN 11910
  188. 11870  PRINT "SHIP STRANDED IN SPACE. YOU HAVE INSUFFICIENT ENERGY TO"
  189. 11880  PRINT "MANEUVER. SHIELDS CANNOT BE CROSS-CIRCUITED"
  190. 11890  GOTO 16870
  191. 11900  PRINT "TYPE 'HEL' FOR HELP"
  192. 11910  PRINT "COMMAND ";
  193. 11920  LINE INPUT COMM$
  194. 11930  IF COMM$ = "" THEN 11900
  195. 11940  C$ = MID$(COMM$,1,3)
  196. 11950  OO = INSTR(COMMAND$,C$)
  197. 11960  IF LEN(COMM$) < 4 THEN 11980
  198. 11970  COMM$ = FN B$(3)
  199. 11980  IF OO = 0 THEN 11900
  200. 11990  OO = (OO + 2) / 3
  201. 12000  ON OO GOTO 12180,11840,14390,14990,16090
  202. 12010  ON OO - 5 GOTO 16310,16930,12020,18350,19130
  203. 12020  PRINT "TYPE ONE OF THE FOLLOWING:"
  204. 12030  PRINT "NAV - SET COURSE"
  205. 12040  PRINT "SRS - SHORT RANGE SENSOR SCAN"
  206. 12050  PRINT "PHA - FIRE LASERS"
  207. 12060  PRINT "TOR - FIRE PHOTON TORPEDOES"
  208. 12070  PRINT "SHE - RAISE OR LOWER SHEILDS"
  209. 12080  PRINT "DAM - REPAIR DAMAGE WHEN DOCKED"
  210. 12090  PRINT "GAL - CUMULATIVE GALAXY RECORD"
  211. 12100  PRINT "XXX - TO RESIGN YOUR COMMAND"
  212. 12110  PRINT "ALTERNATE FORMS: WHERE <STATEMENT> IS ANY LEGAL NUMBER."
  213. 12120  PRINT "NAV<COURSE>,<WARP FACTOR>"
  214. 12130  PRINT "PHA<ENERGY>"
  215. 12140  PRINT "TOR<DIRECTION>"
  216. 12150  PRINT "SHE<ENERGY>"
  217. 12160  PRINT
  218. 12170  GOTO 11850
  219. 12180  IF COMM$ = "NAV" THEN 12230
  220. 12190  GOSUB 19670
  221. 12200  COURSE = VQ
  222. 12210  IF OUT.OF.GALAXY = 1 AND COURSE < > INT(COURSE) THEN 12300
  223. 12220  ON ISH + 1 GOTO 11900,12260,12230,12320
  224. 12230  PRINT "COURSE";
  225. 12240  INPUT COURSE
  226. 12250  IF OUT.OF.GALAXY = 1 AND COURSE < > INT(COURSE) THEN 12300
  227. 12260  IF COURSE = 9 THEN 12280
  228. 12270  GOTO 12290
  229. 12280  COURSE = 1
  230. 12290  IF COURSE > = 1 AND COURSE < 9 THEN 12370
  231. 12300  PRINT "INCORRECT COURSE DATA"
  232. 12310  GOTO 11850
  233. 12320  IF COURSE > = 1 AND COURSE < 9 THEN 12340
  234. 12330  GOTO 12300
  235. 12340  GOSUB 19670
  236. 12350  WARP.SPEED = VQ
  237. 12360  ON ISH + 1 GOTO 11900,12490,12370,11900
  238. 12370  SINGLE$ = "10"
  239. 12380  IF DAMAGE.STATS(1) < 0 THEN 12400
  240. 12390  GOTO 12410
  241. 12400  SINGLE$ = ".5"
  242. 12410  IF OUT.OF.GALAXY = 0 THEN 12440
  243. 12420  PRINT "WARP FACTOR";
  244. 12430  GOTO 12450
  245. 12440  PRINT "WARP FACTOR (0-";SINGLE$;")";
  246. 12450  INPUT WARP.SPEED
  247. 12460  IF OUT.OF.GALAXY = 1 THEN 14060
  248. 12470  IF DAMAGE.STATS(1) < 0 AND WARP.SPEED > 0.5 THEN 12550
  249. 12480  GOTO 12510
  250. 12490  IF OUT.OF.GALAXY = 0 AND DAMAGE.STATS(1) < 0 AND WARP.SPEED > 0.5 THEN 12550
  251. 12500  IF OUT.OF.GALAXY = 1 THEN 14060
  252. 12510  IF WARP.SPEED > 0 AND WARP.SPEED < = 10 THEN 12570
  253. 12520  IF WARP.SPEED = 0 THEN 11850
  254. 12530  PRINT "THE ENGINES WONT TAKE WARP ";WARP.SPEED;"!"
  255. 12540  GOTO 11850
  256. 12550  PRINT "WARP ENGINES DAMAGED. MAX. WARP SPEED IS 0.5"
  257. 12560  GOTO 11850
  258. 12570  N = INT(WARP.SPEED * 10 + 0.5)
  259. 12580  IF ENERGY - N > 0 THEN 12630
  260. 12590  PRINT "INSUFFICIENT ENERGY FOR MOVING AT WARP ";WARP.SPEED
  261. 12600  IF SHIELDS < N - ENERGY OR DAMAGE.STATS(7) < 0 THEN 11850
  262. 12610  PRINT SHIELDS;"UNITS OF ENERGY DEPLOYED TO SHIELDS"
  263. 12620  GOTO 11850
  264. 12630  FOR OO = 1 TO KLINGONS.IN.QUADRANT
  265. 12640  IF KLINGON.STATS(OO,3) = 0 THEN 12740
  266. 12650  ITEM$ = "   "
  267. 12660  STRING.SEARCH.1 = KLINGON.STATS(OO,1)
  268. 12670  STRING.SEARCH.2 = KLINGON.STATS(OO,2)
  269. 12680  GOSUB 18840
  270. 12690  GOSUB 18760
  271. 12700  KLINGON.STATS(OO,1) = STRING.SEARCH.1
  272. 12710  KLINGON.STATS(OO,2) = STRING.SEARCH.2
  273. 12720  ITEM$ = "+++"
  274. 12730  GOSUB 18840
  275. 12740  NEXT OO
  276. 12750  GOSUB 16640
  277. 12760  MARK.IT = 0
  278. 12770  ADD.DAMAGE = WARP.SPEED
  279. 12780  IF WARP.SPEED > = 1 THEN 12800
  280. 12790  GOTO 12810
  281. 12800  ADD.DAMAGE = 1
  282. 12810  FOR OO = 1 TO 8
  283. 12820  IF DAMAGE.STATS(OO) > = 0 THEN 12960
  284. 12830  DAMAGE.STATS(OO) = DAMAGE.STATS(OO) + ADD.DAMAGE
  285. 12840  IF DAMAGE.STATS(OO) > - 0.1 AND DAMAGE.STATS(OO) < 0 THEN 12860
  286. 12850  GOTO 12880
  287. 12860  DAMAGE.STATS(OO) = - 0.1
  288. 12870  GOTO 12960
  289. 12880  IF DAMAGE.STATS(OO) < 0 THEN 12960
  290. 12890  IF MARK.IT < > 1 THEN 12910
  291. 12900  GOTO 12930
  292. 12910  MARK.IT = 1
  293. 12920  PRINT "DAMAGE CONTROL REPORT: ";
  294. 12930  RANDOM.NO.1 = OO
  295. 12940  PRINT DEVICE$(RANDOM.NO.1);" REPAIR COMPLETED."
  296. 12950  GOSUB 18730
  297. 12960  NEXT OO
  298. 12970  IF RND(1) > 0.2 THEN 13110
  299. 12980  RANDOM.NO.1 = INT( RND(1) * 8 + 1)
  300. 12990  IF RND(1) > 0.6 THEN 13060
  301. 13000  DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.STATS(RANDOM.NO.1) - ( RND(1) * 5 + 1)
  302. 13010  PRINT "DAMAGE CONTROL REPORT: ";
  303. 13020  PRINT DEVICE$(RANDOM.NO.1);" DAMAGED."
  304. 13030  PRINT
  305. 13040  GOSUB 18730
  306. 13050  GOTO 13110
  307. 13060  DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.STATS(RANDOM.NO.1) + RND(1) * 3 + 1
  308. 13070  PRINT "DAMAGE CONTROL REPORT: ";
  309. 13080  PRINT DEVICE$(RANDOM.NO.1);" STATE OF REPAIR IMPROVED."
  310. 13090  PRINT
  311. 13100  GOSUB 18730
  312. 13110  ITEM$ = "   "
  313. 13120  STRING.SEARCH.1 = INT(SECTORX)
  314. 13130  STRING.SEARCH.2 = INT(SECTORY)
  315. 13140  GOSUB 18840
  316. 13150  SAVER1 = WARP.COOR( INT(COURSE),1)
  317. 13160  SAVER1.1 = INT(COURSE)
  318. 13170  SAVER1.2 = COURSE - SAVER1.1
  319. 13180  SAVER1 = SAVER1 + (WARP.COOR(SAVER1.1 + 1,1) - SAVER1) * SAVER1.2
  320. 13190  X = SECTORX
  321. 13200  Y = SECTORY
  322. 13210  SAVER2 = WARP.COOR( INT(COURSE),2)
  323. 13220  SAVER2.1 = INT(COURSE)
  324. 13230  SAVER2.2 = COURSE - SAVER2.1
  325. 13240  SAVER2 = SAVER2 + (WARP.COOR(SAVER2.1 + 1,2) - SAVER2) * SAVER2.2
  326. 13250  SAVEX = QUADRANTX
  327. 13260  SAVEY = QUADRANTY
  328. 13270  FOR OO = 1 TO N
  329. 13280  SECTORX = SECTORX + SAVER1
  330. 13290  SECTORY = SECTORY + SAVER2
  331. 13300  IF SECTORX < 1 OR SECTORX > = 11 THEN 13540
  332. 13310  IF SECTORY < 1 OR SECTORY > = 11 THEN 13540
  333. 13320  PUT.IN = INT(SECTORX) * 30 + INT(SECTORY) * 3 - 32
  334. 13330  IF MID$(QUADRANT$,PUT.IN,2) = "  " THEN 13390
  335. 13340  SECTORX = INT(SECTORX - SAVER1)
  336. 13350  SECTORY = INT(SECTORY - SAVER2)
  337. 13360  PRINT "WARP ENGINES SHUT DOWN AT ";
  338. 13370  PRINT "SECTOR";SECTORX;",";SECTORY;"DUE TO BAD NAVIGATION."
  339. 13380  GOTO 13420
  340. 13390  NEXT OO
  341. 13400  SECTORX = INT(SECTORX)
  342. 13410  SECTORY = INT(SECTORY)
  343. 13420  ITEM$ = "<*>"
  344. 13430  STRING.SEARCH.1 = INT(SECTORX)
  345. 13440  STRING.SEARCH.2 = INT(SECTORY)
  346. 13450  GOSUB 18840
  347. 13460  GOSUB 14180
  348. 13470  ADD.TIME = 1
  349. 13480  IF WARP.SPEED < 1 THEN 13500
  350. 13490  GOTO 13510
  351. 13500  ADD.TIME = 0.1 * INT(WARP.SPEED * 10)
  352. 13510  STARDATE = STARDATE + ADD.TIME
  353. 13520  IF STARDATE > STARDATE.CONSTANT + DAYS THEN 16870
  354. 13530  GOTO 11840
  355. 13540  X = 10 * QUADRANTX + X + N * SAVER1
  356. 13550  Y = 10 * QUADRANTY + Y + N * SAVER2
  357. 13560  QUADRANTX = INT(X / 10)
  358. 13570  QUADRANTY = INT(Y / 10)
  359. 13580  SECTORX = INT(X - QUADRANTX * 10)
  360. 13590  SECTORY = INT(Y - QUADRANTY * 10)
  361. 13600  CHECKER = 0
  362. 13610  IF SECTORX = 0 THEN 13630
  363. 13620  GOTO 13650
  364. 13630  QUADRANTX = QUADRANTX - 1
  365. 13640  SECTORX = 10
  366. 13650  IF SECTORY = 0 THEN 13670
  367. 13660  GOTO 13710
  368. 13670  QUADRANTY = QUADRANTY - 1
  369. 13680  OUT.OF.GALAXY = 0
  370. 13690  GOTO 11190
  371. 13700  SECTORY = 10
  372. 13710  IF QUADRANTX < 1 THEN 13730
  373. 13720  GOTO 13760
  374. 13730  CHECKER = 1
  375. 13740  QUADRANTX = 1
  376. 13750  SECTORX = 1
  377. 13760  IF QUADRANTX > 10 THEN 13780
  378. 13770  GOTO 13810
  379. 13780  CHECKER = 1
  380. 13790  QUADRANTX = 10
  381. 13800  SECTORX = 10
  382. 13810  IF QUADRANTY < 1 THEN 13830
  383. 13820  GOTO 13860
  384. 13830  CHECKER = 1
  385. 13840  SECTORY = 1
  386. 13850  QUADRANTY = 1
  387. 13860  IF QUADRANTY > 10 THEN 13880
  388. 13870  GOTO 13910
  389. 13880  CHECKER = 1
  390. 13890  QUADRANTY = 10
  391. 13900  SECTORY = 10
  392. 13910  IF CHECKER = 0 THEN 14020
  393. 13920  PRINT "GALAXY BORDER REACHED."
  394. 13930  HYPERX = INT( RND(1) * 10000 + 5000)
  395. 13940  HYPERY = INT( RND(1) * 10000 + 5000)
  396. 13950  PRINT "ENTERING HYPERSPACE AT COORDINATES";HYPERX;",";HYPERY
  397. 13960  OUT.OF.GALAXY = 1
  398. 13970  ITEM$ = "   "
  399. 13980  STRING.SEARCH.1 = QUADRANTX
  400. 13990  STRING.SEARCH.2 = QUADRANTY
  401. 14000  GOSUB 18840
  402. 14010  IF STARDATE > STARDATE.CONSTANT + DAYS THEN 16870
  403. 14020  IF 10 * QUADRANTX + QUADRANTY = 10 * SAVEX + SAVEY THEN 13420
  404. 14030  STARDATE = STARDATE + 1
  405. 14040  GOSUB 14180
  406. 14050  GOTO 11190
  407. 14060  HYPER1.1 = ABS(COURSE = 1 OR COURSE = 2 OR COURSE = 8)
  408. 14070  HYPER1.2 = ABS(COURSE = 4 OR COURSE = 5 OR COURSE = 6)
  409. 14080  HYPER1.3 = ABS(COURSE = 2 OR COURSE = 3 OR COURSE = 4)
  410. 14090  HYPER1.4 = ABS(COURSE = 6 OR COURSE = 7 OR COURSE = 8)
  411. 14100  HYPERX = HYPERX + WARP.SPEED * HYPER1.1
  412. 14110  HYPERX = HYPERX - WARP.SPEED * HYPER1.2
  413. 14120  HYPERY = HYPERY + WARP.SPEED * HYPER1.3
  414. 14130  HYPERY = HYPERY - WARP.SPEED * HYPER1.4
  415. 14140  IF HYPERX = 0 AND HYPERY = 0 THEN 14160
  416. 14150  GOTO 11910
  417. 14160  OUT.OF.GALAXY = 0
  418. 14170  GOTO 11190
  419. 14180  ENERGY = ENERGY - N - 10
  420. 14190  IF ENERGY > = 0 THEN RETURN
  421. 14200  PRINT "SHIELD CONTROL SUPPLIES ENERGY TO COMPLETE THE MANEUVER."
  422. 14210  SHIELDS = SHIELDS + ENERGY
  423. 14220  IF SHIELDS < = 0 THEN 14240
  424. 14230  GOTO 14250
  425. 14240  SHIELDS = 0
  426. 14250  RETURN
  427. 14260  IF DAMAGE.STATS(3) < 0 THEN 14280
  428. 14270  GOTO 14300
  429. 14280  PRINT "LONG RANGE SENSORS ARE INOPERABLE."
  430. 14290  GOTO 14370
  431. 14300  FOR OO = QUADRANTX - 1 TO QUADRANTX + 1
  432. 14310  FOR OOO = QUADRANTY - 1 TO QUADRANTY + 1
  433. 14320  IF OO > 0 AND OO < 11 AND OOO > 0 AND OOO < 11 THEN 14340
  434. 14330  GOTO 14350
  435. 14340  GALAXY(OO,OOO) = INT(GALAXY(OO,OOO)) + 0.1
  436. 14350  NEXT OOO
  437. 14360  NEXT OO
  438. 14370  GOSUB 18410
  439. 14380  RETURN
  440. 14390  IF DAMAGE.STATS(4) < 0 THEN 14410
  441. 14400  GOTO 14430
  442. 14410  PRINT "PHASERS INOPERATIVE"
  443. 14420  GOTO 11850
  444. 14430  IF KLINGONS.IN.QUADRANT > 0 THEN 14460
  445. 14440  PRINT "NO ENEMY SHIPS IN THIS QUADRANT"
  446. 14450  GOTO 11850
  447. 14460  IF DAMAGE.STATS(8) < 0 THEN 14480
  448. 14470  GOTO 14490
  449. 14480  PRINT "COMPUTER FAILURE HAMPERS ACCURACY."
  450. 14490  IF COMM$ = "PHA" THEN 14550
  451. 14500  GOSUB 19670
  452. 14510  X = VQ
  453. 14520  ON ISH + 1 GOTO 11900,14580,14550,11900
  454. 14530  PRINT "PHASERS LOCKED ON TARGET:";
  455. 14540  PRINT ENERGY;"UNITS OF ENERGY AVAILABLE"
  456. 14550  PRINT "NUMBER OF UNITS TO FIRE";
  457. 14560  INPUT X
  458. 14570  IF X < = 0 THEN 11850
  459. 14580  IF ENERGY - X < = 0 THEN 14540
  460. 14590  ENERGY = ENERGY - X
  461. 14600  IF DAMAGE.STATS(7) < 0 THEN 14620
  462. 14610  GOTO 14630
  463. 14620  X = X * RND(1)
  464. 14630  H1 = INT(X / KLINGONS.IN.QUADRANT)
  465. 14640  FOR OO = 1 TO 3
  466. 14650  IF KLINGON.STATS(OO,3) < = 0 THEN 14960
  467. 14660  H = INT((H1 / FN D(1)) * ( RND(1) + 2))
  468. 14670  IF H > 0.15 * KLINGON.STATS(OO,3) THEN 14710
  469. 14680  PRINT "SENSORS SHOW NO DAMAGE TO ENEMY AT";
  470. 14690  PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
  471. 14700  GOTO 14960
  472. 14710  KLINGON.STATS(OO,3) = KLINGON.STATS(OO,3) - H
  473. 14720  PRINT H;"UNITS HIT ON KLINGON AT SECTOR:";
  474. 14730  PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
  475. 14740  IF KLINGON.STATS(OO,3) < = 0 THEN 14760
  476. 14750  GOTO 14850
  477. 14760  BEEP
  478. 14770  COLOR 4
  479. 14780  PRINT "*** ";
  480. 14790  COLOR 7
  481. 14800  PRINT "KLINGON DESTROYED ";
  482. 14810  COLOR 4
  483. 14820  PRINT "***"
  484. 14830  COLOR 7
  485. 14840  GOTO 14870
  486. 14850  PRINT "SENSORS SHOW";KLINGON.STATS(I,3);"UNITS REMAINING"
  487. 14860  GOTO 14960
  488. 14870  KLINGONS.IN.QUADRANT = KLINGONS.IN.QUADRANT - 1
  489. 14880  NO.OF.KLINGONS = NO.OF.KLINGONS - 1
  490. 14890  STRING.SEARCH.1 = KLINGON.STATS(OO,1)
  491. 14900  STRING.SEARCH.2 = KLINGON.STATS(OO,2)
  492. 14910  ITEM$ = "   "
  493. 14920  GOSUB 18840
  494. 14930  KLINGON.STATS(OO,3) = 0
  495. 14940  GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) - 100
  496. 14950  IF NO.OF.KLINGONS < = 0 THEN 16990
  497. 14960  NEXT OO
  498. 14970  GOSUB 16640
  499. 14980  GOTO 11850
  500. 14990  IF TORPEDOES < = 0 THEN 15010
  501. 15000  GOTO 15030
  502. 15010  PRINT "PHOTON TORPEDOES EXPENDED."
  503. 15020  GOTO 11850
  504. 15030  IF DAMAGE.STATS(5) < 0 THEN 15050
  505. 15040  GOTO 15070
  506. 15050  PRINT "PHOTON TUBES NOT OPERATIONAL."
  507. 15060  GOTO 11850
  508. 15070  IF COMM$ = "TOR" THEN 15110
  509. 15080  GOSUB 19670
  510. 15090  COURSE = VQ
  511. 15100  ON ISH + 1 GOTO 11900,15130,15110,11900
  512. 15110  PRINT "PHOTON TORPEDOE COURSE";
  513. 15120  INPUT COURSE
  514. 15130  IF COURSE = 9 THEN 15150
  515. 15140  GOTO 15160
  516. 15150  COURSE = 1
  517. 15160  IF COURSE > = 1 AND COURSE < 9 THEN 15190
  518. 15170  PRINT "INCORRECT COURSE DATA"
  519. 15180  GOTO 11850
  520. 15190  SAVER1 = WARP.COOR( INT(COURSE),1)
  521. 15200  SAVER1.1 = INT(COURSE)
  522. 15210  SAVER1.2 = COURSE - SAVER1.1
  523. 15220  SAVER1 = SAVER1 + (WARP.COOR(SAVER1.1 + 1,1) - SAVER1) * SAVER1.2
  524. 15230  ENERGY = ENERGY - 10
  525. 15240  TORPEDOES = TORPEDOES - 1
  526. 15250  SAVER2 = WARP.COOR( INT(COURSE),2)
  527. 15260  SAVER2.1 = INT(COURSE)
  528. 15270  SAVER2.2 = COURSE - SAVER2.1
  529. 15280  SAVER2 = SAVER2 + (WARP.COOR(SAVER2.1 + 1,2) - SAVER2) * SAVER2.2
  530. 15290  X = SECTORX
  531. 15300  Y = SECTORY
  532. 15310  PRINT "TORPEDOE TRACK:"
  533. 15320  X = X + SAVER1
  534. 15330  Y = Y + SAVER2
  535. 15340  COORDINATEX = INT(X + 0.5)
  536. 15350  COORDINATEY = INT(Y + 0.5)
  537. 15360  IF COORDINATEX < 1 OR COORDINATEX > 10 THEN 16060
  538. 15370  IF COORDINATEY < 1 OR COORDINATEY > 10 THEN 16060
  539. 15380  PRINT "                ";COORDINATEX;",";COORDINATEY
  540. 15390  ITEM$ = "   "
  541. 15400  STRING.SEARCH.1 = X
  542. 15410  STRING.SEARCH.2 = Y
  543. 15420  GOSUB 18990
  544. 15430  IF FIND < > 0 THEN 15320
  545. 15440  ITEM$ = "+++"
  546. 15450  STRING.SEARCH.1 = X
  547. 15460  STRING.SEARCH.2 = Y
  548. 15470  GOSUB 18990
  549. 15480  IF FIND = 0 THEN 15680
  550. 15490  BEEP
  551. 15500  COLOR 4
  552. 15510  PRINT "*** ";
  553. 15520  COLOR 7
  554. 15530  PRINT "KLINGON DESTROYED ";
  555. 15540  COLOR 4
  556. 15550  PRINT "***"
  557. 15560  COLOR 7
  558. 15570  KLINGONS.IN.QUADRANT = KLINGONS.IN.QUADRANT - 1
  559. 15580  NO.OF.KLINGONS = NO.OF.KLINGONS - 1
  560. 15590  IF NO.OF.KLINGONS < = 0 THEN 16990
  561. 15600  FOR OO = 1 TO 3
  562. 15610  TESTERX = KLINGON.STATS(OO,1)
  563. 15620  TESTERY = KLINGON.STATS(OO,2)
  564. 15630  IF COORDINATEX = TESTERX AND COORDINATEY = TESTERY THEN 15660
  565. 15640  NEXT OO
  566. 15650  OO = 3
  567. 15660  KLINGON.STATS(OO,3) = 0
  568. 15670  GOTO 15960
  569. 15680  ITEM$ = " * "
  570. 15690  STRING.SEARCH.1 = X
  571. 15700  STRING.SEARCH.2 = Y
  572. 15710  GOSUB 18990
  573. 15720  IF FIND = 0 THEN 15760
  574. 15730  PRINT "STAR AT";COORDINATEX;",";COORDINATEY;"ABSORBED TORPEDOE ENERGY"
  575. 15740  GOSUB 16640
  576. 15750  GOTO 11850
  577. 15760  ITEM$ = ">|<"
  578. 15770  STRING.SEARCH.1 = X
  579. 15780  STRING.SEARCH.2 = Y
  580. 15790  GOSUB 18990
  581. 15800  IF FIND = 0 THEN 14960
  582. 15810  COLOR 4
  583. 15820  PRINT "*** ";
  584. 15830  COLOR 7
  585. 15840  PRINT "STARBASE DESTROYED ";
  586. 15850  COLOR 4
  587. 15860  PRINT "***"
  588. 15870  COLOR 7
  589. 15880  STARBASES.IN.QUADRANT = STARBASES.IN.QUADRANT - 1
  590. 15890  NO.OF.STARBASES = NO.OF.STARBASES - 1
  591. 15900  IF NO.OF.STARBASES = 0 THEN 15940
  592. 15910  IF NO.OF.KLINGONS > T - STARDATE.CONSTANT - DAYS THEN 15940
  593. 15920  PRINT "YOU ARE HEREBY SENTENCED TO 99 STARDATES HARD LABOR ON CYGNUS 12"
  594. 15930  GOTO 16930
  595. 15940  PRINT "STARFLEET COMMEND REVIEWING YOUR RECORD TO CONSIDER COURT MARTIAL"
  596. 15950  ANY.DAMAGE = 0
  597. 15960  STRING.SEARCH.1 = X
  598. 15970  STRING.SEARCH.2 = Y
  599. 15980  ITEM$ = "   "
  600. 15990  GOSUB 18840
  601. 16000  VARIABLE = KLINGONS.IN.QUADRANT * 100
  602. 16010  VARIABLE = VARIABLE + STARBASES.IN.QUADRANT * 10
  603. 16020  VARIABLE = VARIABLE + STARS.IN.QUADRANT + 0.1
  604. 16030  GALAXY(QUADRANTX,QUADRANTY) = VARIABLE
  605. 16040  GOSUB 16640
  606. 16050  GOTO 11850
  607. 16060  PRINT "TORPEDOE MISSED"
  608. 16070  GOSUB 16640
  609. 16080  GOTO 11850
  610. 16090  IF DAMAGE.STATS(7) < 0 THEN 16110
  611. 16100  GOTO 16130
  612. 16110  PRINT "SHIELD CONTROL INOPERABLE."
  613. 16120  GOTO 11850
  614. 16130  PRINT ENERGY + SHIELDS;"UNITS OF ENERGY AVAILABLE"
  615. 16140  IF COMM$ = "SHE" THEN 16180
  616. 16150  GOSUB 19670
  617. 16160  X = VQ
  618. 16170  ON ISH + 1 GOTO 11900,16200,16180,11900
  619. 16180  PRINT "NUMBER OF UNITS TO SHIELDS";
  620. 16190  INPUT X
  621. 16200  IF X < 0 OR X = SHIELDS THEN 16220
  622. 16210  GOTO 16240
  623. 16220  PRINT "SHIELDS UNCHANGED."
  624. 16230  GOTO 11850
  625. 16240  IF X < = ENERGY + SHIELDS THEN 16270
  626. 16250  PRINT "NOT ENOUGH UNITS OF ENERGY AVAILABLE"
  627. 16260  GOTO 11850
  628. 16270  ENERGY = ENERGY + SHIELDS - X
  629. 16280  SHIELDS = X
  630. 16290  PRINT "SHIELDS NOW A"; INT(SHIELDS);"UNITS."
  631. 16300  GOTO 11850
  632. 16310  IF ANY.DAMAGE = 0 THEN 16330
  633. 16320  GOTO 16360
  634. 16330  PRINT "THE ENTERPRISE IS NOT DOCKED TO A STARBASE"
  635. 16340  PRINT "NO REPAIRS CAN BE MADE"
  636. 16350  GOTO 11850
  637. 16360  HOW.MUCH.DAMAGE = 0
  638. 16370  FOR OO = 1 TO 8
  639. 16380  IF DAMAGE.STATS(OO) < 0 THEN 16400
  640. 16390  GOTO 16410
  641. 16400  HOW.MUCH.DAMAGE = HOW.MUCH.DAMAGE + 0.1
  642. 16410  NEXT OO
  643. 16420  IF HOW.MUCH.DAMAGE = 0 THEN 16440
  644. 16430  GOTO 16460
  645. 16440  PRINT "THERE ARE NO DEVICES IN NEED OF REPAIR"
  646. 16450  GOTO 11850
  647. 16460  PRINT
  648. 16470  HOW.MUCH.DAMAGE = HOW.MUCH.DAMAGE + MORE.DAMAGE
  649. 16480  IF HOW.MUCH.DAMAGE > = 1 THEN 16500
  650. 16490  GOTO 16510
  651. 16500  HOW.MUCH.DAMAGE = 0.9
  652. 16510  PRINT "STANDBY TO EFFECT REPAIRS ON YOUR SHIP"
  653. 16520  PRINT "ESTIMATED TIME TO REPAIR:";0.01 * INT(100 * HOW.MUCH.DAMAGE);
  654. 16530  PRINT "STARDATES"
  655. 16540  PRINT "WILL YOU AUTHORIZE THE REPAIR (Y/N)";
  656. 16550  INPUT QUESTION$
  657. 16560  IF QUESTION$ < > "Y" THEN 11850
  658. 16570  FOR OO = 1 TO 8
  659. 16580  IF DAMAGE.STATS(OO) < 0 THEN 16600
  660. 16590  GOTO 16610
  661. 16600  DAMAGE.STATS(OO) = 0
  662. 16610  NEXT OO
  663. 16620  STARDATE = STARDATE + HOW.MUCH.DAMAGE + 0.1
  664. 16630  GOTO 11850
  665. 16640  IF KLINGONS.IN.QUADRANT < = 0 THEN RETURN
  666. 16650  IF ANY.DAMAGE < > 0 THEN 16670
  667. 16660  GOTO 16690
  668. 16670  PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE."
  669. 16680  RETURN
  670. 16690  FOR OO = 1 TO 3
  671. 16700  IF KLINGON.STATS(OO,3) < = 0 THEN 16850
  672. 16710  H = INT((KLINGON.STATS(OO,3) / FN D(1)) * (2 + RND(1)))
  673. 16720  SHIELDS = SHIELDS - H
  674. 16730  KLINGON.STATS(OO,3) = KLINGON.STATS(OO,3) / (3 + RND(0))
  675. 16740  PRINT H;"UNITS HIT ON ENTERPRISE FROM SECTOR";
  676. 16750  PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
  677. 16760  IF SHIELDS < = 0 THEN 16890
  678. 16770  PRINT "SHIELDS DOWN TO";SHIELDS;"UNITS"
  679. 16780  IF H < 20 THEN 16850
  680. 16790  IF RND(1) > 0.6 OR H / SHIELDS < 0.02 THEN 16850
  681. 16800  RANDOM.NO.1 = INT( RND(1) * 8 + 1)
  682. 16810  DAMAGE.SAVER = DAMAGE.STATS(RANDOM.NO.1)
  683. 16820  DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.SAVER - H / SHIELDS - 0.5 * RND(1)
  684. 16830  PRINT "DAMAGE CONTROL REPORTS `";DEVICE$(RANDOM.NO.1);
  685. 16840  PRINT "' DAMAGED BY THE HIT"
  686. 16850  NEXT OO
  687. 16860  RETURN
  688. 16870  PRINT "IT IS STARDATE";STARDATE
  689. 16880  GOTO 16930
  690. 16890  PRINT
  691. 16900  PRINT "THE ENTERPRISE HAS BEEN DESTROYED."
  692. 16910  PRINT "THE FEDERATION WILL BE CONQUERED"
  693. 16920  GOTO 16870
  694. 16930  PRINT "THERE WERE";NO.OF.KLINGONS;"KLINGON BATTLE CRUISERS"
  695. 16940  PRINT "LEFT AT THE END OF YOUR MISSION."
  696. 16950  PRINT "AGAIN (Y/N)";
  697. 16960  INPUT QUESTION$
  698. 16970  IF QUESTION$ = "Y" THEN 10090
  699. 16980  END
  700. 16990  PRINT "THE LAST KLINGON BATTLE CRUISER HAS BEEN DESTROYED"
  701. 17000  PRINT "YOUR EFFICIENCY RATING IS";
  702. 17010  PRINT 1000 * (KLINGON.FOR.RATING / (T - STARDATE.CONSTANT)) ^ 2
  703. 17020  GOTO 16950
  704. 17030  IF OUT.OF.GALAXY = 0 THEN 17060
  705. 17040  PRINT "COORDINATES ";HYPERX;",";HYPERY
  706. 17050  RETURN
  707. 17060  GOSUB 14260
  708. 17070  PRINT
  709. 17080  FOR OO = SECTORX - 1 TO SECTORX + 1
  710. 17090  FOR OOO = SECTORY - 1 TO SECTORY + 1
  711. 17100  IF INT(OO + 0.5) < 1 OR INT(OO + 0.5) > 10 THEN 17170
  712. 17110  IF INT(OOO + 0.5) < 1 OR INT(OOO + 0.5) > 10 THEN 17170
  713. 17120  ITEM$ = ">|<"
  714. 17130  STRING.SEARCH.1 = OO
  715. 17140  STRING.SEARCH.2 = OOO
  716. 17150  GOSUB 18990
  717. 17160  IF FIND = 1 THEN 17210
  718. 17170  NEXT OOO
  719. 17180  NEXT OO
  720. 17190  ANY.DAMAGE = 0
  721. 17200  GOTO 17280
  722. 17210  ANY.DAMAGE = 1
  723. 17220  C$ = "DOCKED"
  724. 17230  ENERGY = ENERGY.CONSTANT
  725. 17240  TORPEDOES = TORPEDOE.CONSTANT
  726. 17250  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
  727. 17260  SHIELDS = 0
  728. 17270  GOTO 17360
  729. 17280  IF KLINGONS.IN.QUADRANT > 0 THEN 17300
  730. 17290  GOTO 17320
  731. 17300  C$ = "   RED"
  732. 17310  GOTO 17360
  733. 17320  C$ = " GREEN"
  734. 17330  IF ENERGY < ENERGY.CONSTANT * 0.1 THEN 17350
  735. 17340  GOTO 17360
  736. 17350  C$ = "YELLOW"
  737. 17360  IF DAMAGE.STATS(2) > = 0 THEN 17430
  738. 17370  PRINT
  739. 17380  PRINT "SHORT RANGE SENSORS ARE OUT"
  740. 17390  PRINT
  741. 17400  IF DAMAGE.STATS(3) < 0 THEN 17420
  742. 17410  GOSUB 19200
  743. 17420  RETURN
  744. 17430  O1$ = STRING$(40,"-")
  745. 17440  PRINT O1$;
  746. 17450  IF DAMAGE.STATS(3) < 0 THEN 17500
  747. 17460  PRINT STRING$(19," ");
  748. 17470  COLOR 4
  749. 17480  PRINT MID$(O1$,1,13);
  750. 17490  COLOR 7
  751. 17500  PRINT
  752. 17510  FOR OO = 1 TO 10
  753. 17520  FOR OOO = (OO - 1) * 30 + 1 TO (OO - 1) * 30 + 28 STEP 3
  754. 17530  PRINT " ";
  755. 17540  VE$ = MID$(QUADRANT$,OOO,3)
  756. 17550  IF VE$ = " * " THEN 17570
  757. 17560  GOTO 17600
  758. 17570  COLOR 15
  759. 17580  PRINT VE$;
  760. 17590  GOTO 17750
  761. 17600  IF VE$ = "+++" THEN 17620
  762. 17610  GOTO 17650
  763. 17620  COLOR 4
  764. 17630  PRINT VE$;
  765. 17640  GOTO 17750
  766. 17650  IF VE$ = ">|<" THEN 17670
  767. 17660  GOTO 17700
  768. 17670  COLOR 1
  769. 17680  PRINT VE$;
  770. 17690  GOTO 17750
  771. 17700  IF VE$ = "<*>" THEN 17730
  772. 17710  PRINT "   ";
  773. 17720  GOTO 17750
  774. 17730  COLOR 14
  775. 17740  PRINT VE$;
  776. 17750  NEXT OOO
  777. 17760  COLOR 7
  778. 17770  ON OO GOTO 17790,17840,17910,17980,18080,18130,18210,18240,18270,18300
  779. 17780  PRINT
  780. 17790  PRINT " STARDATE     ";
  781. 17800  PRINT USING "#####"; INT(STARDATE);
  782. 17810  Z7 = - 1
  783. 17820  GOSUB 19500
  784. 17830  GOTO 18320
  785. 17840  PRINT " CONDITION   "; MID$(C$,1,6);
  786. 17850  IF DAMAGE.STATS(3) < 0 THEN 17890
  787. 17860  COLOR 4
  788. 17870  PRINT STRING$(13,"-");
  789. 17880  COLOR 7
  790. 17890  PRINT
  791. 17900  GOTO 18320
  792. 17910  PRINT " QUADRANT     ";
  793. 17920  PRINT USING "##";QUADRANTX;
  794. 17930  PRINT ",";
  795. 17940  PRINT USING "##";QUADRANTY;
  796. 17950  Z7 = 0
  797. 17960  GOSUB 19500
  798. 17970  GOTO 18320
  799. 17980  PRINT " SECTOR       ";
  800. 17990  PRINT USING "##";SECTORX;
  801. 18000  PRINT ",";
  802. 18010  PRINT USING "##";SECTORY;
  803. 18020  IF DAMAGE.STATS(3) < 0 THEN 18060
  804. 18030  COLOR 4
  805. 18040  PRINT STRING$(13,"-");
  806. 18050  COLOR 7
  807. 18060  PRINT
  808. 18070  GOTO 18320
  809. 18080  PRINT " TORPEDOES    ";
  810. 18090  PRINT USING "#####"; INT(TORPEDOES);
  811. 18100  Z7 = 1
  812. 18110  GOSUB 19500
  813. 18120  GOTO 18320
  814. 18130  PRINT " TOTAL ENERGY ";
  815. 18140  PRINT USING "#####"; INT(ENERGY + SHIELDS);
  816. 18150  IF DAMAGE.STATS(3) < 0 THEN 18190
  817. 18160  COLOR 4
  818. 18170  PRINT STRING$(13,"-");
  819. 18180  COLOR 7
  820. 18190  PRINT
  821. 18200  GOTO 18320
  822. 18210  PRINT " SHIELDS      ";
  823. 18220  PRINT USING "#####"; INT(SHIELDS)
  824. 18230  GOTO 18320
  825. 18240  PRINT " KLINGONS     ";
  826. 18250  PRINT USING "#####"; INT(NO.OF.KLINGONS)
  827. 18260  GOTO 18320
  828. 18270  VS = 1
  829. 18280  GOSUB 19310
  830. 18290  GOTO 18320
  831. 18300  VS = 5
  832. 18310  GOSUB 19310
  833. 18320  NEXT OO
  834. 18330  PRINT O1$
  835. 18340  RETURN
  836. 18350  IF OUT.OF.GALAXY = 1 THEN 11850
  837. 18360  SCREEN 0,1,2,2
  838. 18370  WHILE INKEY$ = ""
  839. 18380  WEND
  840. 18390  SCREEN 0,1,1,1
  841. 18400  GOTO 11850
  842. 18410  SCREEN 0,1,2,1
  843. 18420  CLS
  844. 18430  O1$ = STRING$(41,"-")
  845. 18440  PRINT "COMPUTER RECORD OF GALAXY FOR QUADRANT";QUADRANTX;",";QUADRANTY
  846. 18450  COLOR 4
  847. 18460  PRINT O1$
  848. 18470  COLOR 7
  849. 18480  FOR OO = 1 TO 10
  850. 18490  COLOR 4
  851. 18500  PRINT ":";
  852. 18510  COLOR 7
  853. 18520  FOR OOO = 1 TO 10
  854. 18530  VE = (GALAXY(OO,OOO) - INT(GALAXY(OO,OOO))) * 10
  855. 18540  IF VE = 0 THEN 18560
  856. 18550  GOTO 18620
  857. 18560  COLOR 1
  858. 18570  PRINT "***";
  859. 18580  COLOR 4
  860. 18590  PRINT ":";
  861. 18600  COLOR 7
  862. 18610  GOTO 18670
  863. 18620  VE = INT(GALAXY(OO,OOO))
  864. 18630  PRINT RIGHT$( STR$(VE + 1000),3);
  865. 18640  COLOR 4
  866. 18650  PRINT ":";
  867. 18660  COLOR 7
  868. 18670  NEXT OOO
  869. 18680  COLOR 4
  870. 18690  PRINT
  871. 18700  PRINT O1$
  872. 18710  COLOR 7
  873. 18720  NEXT OO
  874. 18730  SCREEN 0,1,1,1
  875. 18740  LOCATE 23,1
  876. 18750  RETURN
  877. 18760  RANDOM.NO.1 = FN R(1)
  878. 18770  RANDOM.NO.2 = FN R(1)
  879. 18780  ITEM$ = "   "
  880. 18790  STRING.SEARCH.1 = RANDOM.NO.1
  881. 18800  STRING.SEARCH.2 = RANDOM.NO.2
  882. 18810  GOSUB 18990
  883. 18820  IF FIND = 0 THEN 18760
  884. 18830  RETURN
  885. 18840  PUT.IN.SAVER.1 = INT(STRING.SEARCH.2 - 0.5)
  886. 18850  PUT.IN.SAVER.2 = INT(STRING.SEARCH.1 - 0.5)
  887. 18860  PUT.IN = PUT.IN.SAVER.1 * 3 + PUT.IN.SAVER.2 * 30 + 1
  888. 18870  IF PUT.IN = 1 THEN 18890
  889. 18880  GOTO 18910
  890. 18890  QUADRANT$ = ITEM$ + RIGHT$(QUADRANT$,297)
  891. 18900  RETURN
  892. 18910  IF PUT.IN = 298 THEN 18930
  893. 18920  GOTO 18950
  894. 18930  QUADRANT$ = LEFT$(QUADRANT$,297) + ITEM$
  895. 18940  RETURN
  896. 18950  QUADRANT.1$ = LEFT$(QUADRANT$,PUT.IN - 1)
  897. 18960  QUADRANT.2$ = RIGHT$(QUADRANT$,298 - PUT.IN)
  898. 18970  QUADRANT$ = QUADRANT.1$ + ITEM$ + QUADRANT.2$
  899. 18980  RETURN
  900. 18990  STRING.SEARCH.1 = INT(STRING.SEARCH.1 + 0.5)
  901. 19000  STRING.SEARCH.2 = INT(STRING.SEARCH.2 + 0.5)
  902. 19010  PUT.IN = (STRING.SEARCH.2 - 1) * 3 + (STRING.SEARCH.1 - 1) * 30 + 1
  903. 19020  FIND = 0
  904. 19030  IF MID$(QUADRANT$,PUT.IN,3) < > ITEM$ THEN RETURN
  905. 19040  FIND = 1
  906. 19050  RETURN
  907. 19060  RESTORE 10210
  908. 19070  FOR OO = 1 TO QUADRANT.NAME
  909. 19080  READ QUADRANT.NAME$
  910. 19090  NEXT OO
  911. 19100  GEF$ = "   I  II III  IV   V   I  II III  IV   V"
  912. 19110  QUADRANT.NAME$ = QUADRANT.NAME$ + MID$(GEF$,QUADRANT.NO * 4 - 3,4)
  913. 19120  RETURN
  914. 19130  FOR OO = 1 TO 8
  915. 19140  PRINT OO;DEVICE$(OO);DAMAGE.STATS(OO)
  916. 19150  NEXT
  917. 19160  PRINT "DEVICE,STATUS";
  918. 19170  INPUT OO,OOO
  919. 19180  DAMAGE.STATS(OO) = OOO
  920. 19190  GOTO 11850
  921. 19200  O1$ = STRING$(13,"-")
  922. 19210  COLOR 4
  923. 19220  PRINT O1$
  924. 19230  COLOR 7
  925. 19240  FOR Z7 = - 1 TO 1
  926. 19250  GOSUB 19510
  927. 19260  COLOR 4
  928. 19270  PRINT O1$
  929. 19280  COLOR 7
  930. 19290  NEXT Z7
  931. 19300  RETURN
  932. 19310  DF$ = " ENG  SRS  LRS  PHA  TOR  DAM  SHE  COM "
  933. 19320  IF DAMAGE.STATS(6) < 0 THEN 19470
  934. 19330  FOR OOOO = VS TO VS + 3
  935. 19340  COLOR 15
  936. 19350  PRINT MID$(DF$,OOOO * 5 - 4,5);
  937. 19360  IF DAMAGE.STATS(OOOO) < 0 THEN 19410
  938. 19370  IF DAMAGE.STATS(OOOO) > 0 THEN 19440
  939. 19380  COLOR 7
  940. 19390  PRINT USING "##"; INT(DAMAGE.STATS(OOOO));
  941. 19400  GOTO 19460
  942. 19410  COLOR 4
  943. 19420  PRINT USING "+#"; INT(DAMAGE.STATS(OOOO));
  944. 19430  GOTO 19460
  945. 19440  COLOR 1
  946. 19450  PRINT USING "+#"; INT(DAMAGE.STATS(OOOO));
  947. 19460  NEXT OOOO
  948. 19470  PRINT
  949. 19480  COLOR 7
  950. 19490  RETURN
  951. 19500  IF DAMAGE.STATS(3) < 0 THEN 19650
  952. 19510  COLOR 4
  953. 19520  PRINT ":";
  954. 19530  COLOR 7
  955. 19540  FOR OOOO = QUADRANTY - 1 TO QUADRANTY + 1
  956. 19550  IF QUADRANTX + Z7 < 1 OR QUADRANTX + Z7 > 10 THEN 19590
  957. 19560  IF OOOO < 1 OR OOOO > 10 THEN 19590
  958. 19570  PRINT RIGHT$( STR$( INT(GALAXY(QUADRANTX + Z7,OOOO)) + 1000),3);
  959. 19580  GOTO 19610
  960. 19590  COLOR 1
  961. 19600  PRINT "***";
  962. 19610  COLOR 4
  963. 19620  PRINT ":";
  964. 19630  COLOR 7
  965. 19640  NEXT OOOO
  966. 19650  PRINT
  967. 19660  RETURN
  968. 19670  GEF$ = "0123456789,"
  969. 19680  NEG = 1
  970. 19690  ICK = 0
  971. 19700  VQ = 0
  972. 19710  ISH = 0
  973. 19720  IF COMM$ = "" THEN 19740
  974. 19730  GOTO 19760
  975. 19740  ISH = 2
  976. 19750  RETURN
  977. 19760  IF FN A$(1) = "-" THEN 19780
  978. 19770  GOTO 19800
  979. 19780  NEG = - 1
  980. 19790  COMM$ = FN B$(1)
  981. 19800  IF FN A$(1) = "." THEN 19970
  982. 19810  ICK = FN C(1)
  983. 19820  IF ICK = 11 THEN 19940
  984. 19830  IF ICK = 0 THEN 19850
  985. 19840  GOTO 19870
  986. 19850  ISH = 0
  987. 19860  RETURN
  988. 19870  VQ = VQ * 10 + ICK - 1
  989. 19880  COMM$ = FN B$(1)
  990. 19890  IF COMM$ = "" THEN 19910
  991. 19900  GOTO 19800
  992. 19910  ISH = 1
  993. 19920  VQ = VQ * NEG
  994. 19930  RETURN
  995. 19940  ISH = 3
  996. 19950  COMM$ = FN B$(1)
  997. 19960  RETURN
  998. 19970  FOR OO = 1 TO 3
  999. 19980  COMM$ = FN B$(1)
  1000. 19990  IF COMM$ = "" THEN 19910
  1001. 20000  ICK = FN C(1)
  1002. 20010  IF ICK = 11 THEN 19940
  1003. 20020  IF ICK = 0 THEN 19850
  1004. 20030  VQ = VQ + (ICK - 1) / 10 ^ OO
  1005. 20040  NEXT OO
  1006. 20050  COMM$ = FN B$(1)
  1007. 20060  IF COMM$ = "" THEN 19910
  1008. 20070  IF FN C(1) > 0 AND FN C(1) < 11 THEN 19850
  1009. 20080  IF FN C(1) = 11 THEN 19940
  1010. 20090  GOTO 19910
  1011.